// Mudos.h: Definition of the CMudos class
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_MUDOS_H__1B6ED7C2_EB38_11D1_BF0B_0000B4560A15__INCLUDED_)
#define AFX_MUDOS_H__1B6ED7C2_EB38_11D1_BF0B_0000B4560A15__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

#include "resource.h"       // main symbols

/////////////////////////////////////////////////////////////////////////////
// CMudos

class CMudos : 
	public CComDualImpl<IMudOS, &IID_IMudOS, &LIBID_MUDOSLib>, 
	public ISupportErrorInfo,
	public CComObjectRoot,
	public CComCoClass<CMudos,&CLSID_MudOS>
{
public:
	CMudos() {}
BEGIN_COM_MAP(CMudos)
	COM_INTERFACE_ENTRY(IDispatch)
	COM_INTERFACE_ENTRY(IMudOS)
	COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
//DECLARE_NOT_AGGREGATABLE(CMudos) 
// Remove the comment from the line above if you don't want your object to 
// support aggregation. 

DECLARE_REGISTRY(CMudos, _T("MudOS.MudOS.1"), _T("MudOS.MudOS"), IDS_MUDOS_DESC, THREADFLAGS_BOTH)
// ISupportsErrorInfo
	STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);

// IMudos
public:
	STDMETHOD(GetPlayerID)(/*[out, retval]*/IMObject *pOb, int *pVal);
	STDMETHOD(get_CurrentPlayer)(/*[out, retval]*/ IMObject * *pVal);
	STDMETHOD(NewValue)(/*[out, retval]*/ IMValue ** pVal);
	STDMETHOD(get_HeartBeat)(/*[out, retval]*/ int *pVal);
	STDMETHOD(put_HeartBeat)(/*[in]*/ int newVal);
	STDMETHOD(GetUser)(/*[in]*/ int UserId,/*[out,retval]*/ IMObject * * pVal);
	STDMETHOD(get_Users)(/*[out, retval]*/ IMArray * *pVal);
	STDMETHOD(Shutdown)();
	STDMETHOD(SetCommIn)(/*[in]*/ int pFunc);
	STDMETHOD(SetCommOut)(/*[in]*/ int pFunc);
	STDMETHOD(get_CurrentProgram)(/*[out, retval]*/ IMProgram * *pVal);
	STDMETHOD(get_CurrentObject)(/*[out, retval]*/ IMObject * *pVal);
};

#endif // !defined(AFX_MUDOS_H__1B6ED7C2_EB38_11D1_BF0B_0000B4560A15__INCLUDED_)
